package com.fdb.efp.limit.service.facade;

import java.util.List;

import com.fdb.efp.limit.service.vo.LmtPrdContVO;
import com.fdb.basic.framework.core.base.DataOptionalAuthority;
import com.fdb.basic.framework.core.bean.SedSynCusManageVO;
import org.apache.ibatis.annotations.Param;

/**
 * <p>Description:授信协议表				<p>
 * @author chenqm1
 * @date 2018-05-09
 */
public interface LmtPrdContService extends DataOptionalAuthority {

	public List<LmtPrdContVO> queryAllOwner(LmtPrdContVO lmtPrdContVo);

	public List<LmtPrdContVO> queryAllCurrOrg(LmtPrdContVO lmtPrdContVo);

	public List<LmtPrdContVO> queryAllCurrDownOrg(LmtPrdContVO lmtPrdContVo);

	public List<LmtPrdContVO> queryAllCurrOwnerPrd(LmtPrdContVO lmtPrdContVo);

	/**
	 * 根据对象查询所有数据，不分页
	 * @param lmtPrdCont
	 * @return
	 */
	public List<LmtPrdContVO> queryLmtPrdList(LmtPrdContVO lmtPrdContVo);

	/**
	 * 产品协议表插入记录
	 * @param inLmtPrdContVo
	 * @return
	 */
	public int insertLmtPrdCont(LmtPrdContVO lmtPrdContVO);

	public int deleteByPk(LmtPrdContVO lmtPrdContVo);

	public int updateByPk(LmtPrdContVO lmtPrdContVo);

	public LmtPrdContVO queryByPk(LmtPrdContVO lmtPrdContVo);

	/**
	 * 额度激活进度查询
	 * @param lmtPrdContVO
	 * @return
	 */
	public List<LmtPrdContVO> queryPrdContProcess(LmtPrdContVO lmtPrdContVO);
	/**
	 * 授信协议表状态修改
	 * @param lmtPrdContVo
	 * @return
	 */
	public int updatePrdContStatus(LmtPrdContVO lmtPrdContVo);

	/**
	 * 签订授信合同
	 * @return
	 * @throws Exception
	 */
	public boolean signPrdCont(String lmtContNo) throws Exception;

	/**
	 * 查询当期登录法人机构下的 授信协议列表
	 * @param lmtPrdContVo
	 * @return
	 */
	public List<LmtPrdContVO> queryLmtPrdContsByLegal(LmtPrdContVO lmtPrdContVo);


	/**
	 * 查询当期登录法人机构下的 可终止的授信协议列表
	 * @param lmtPrdContVo
	 * @return
	 */
	public List<LmtPrdContVO> queryLmtPrdContsForTerByLegal(LmtPrdContVO lmtPrdContVo);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年3月13日 上午10:03:27
	 * 功能描述：通过渠道编号、产品编号、身份证号、系统当前日期查询授信协议信息
	 */
	public LmtPrdContVO qryLmtPrdContByCondition(LmtPrdContVO lmtPrdContVo);

	/**
	 *  失效 超过授信协议到期的记录
	 *
	 * 0.1:caoxin:2019/3/22 8:46: 失效 超过授信协议到期的记录
	 * @author caoxin
	 * @return
	 * @since 2019/3/22 8:46
	 * @date 2019/3/22 8:46
	 * @version 0.1
	 */

	int inValidLmtProContOverExpireDate(String openDay);

	/**
	 *
	 * 同步额度信息表有数据则更新，无则新增 <br>
	 * 0.1:ludayong:2019年5月10日 下午3:35:56:新增 <br>
	 *
	 * @author ludayong
	 * @since 2019年5月10日 下午3:35:56
	 * @date 2019年5月10日 下午3:35:56
	 * @version 0.1
	 */
	public int insertOrUpdateLmtPrdCont(List<LmtPrdContVO> lmtPrdContList);
	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月23日 下午7:28:08
	 * 功能描述：通过授信申请流水号查询信息
	 */
	public LmtPrdContVO qryLmtPrdContByLmtApplySeq(String lmtApplySeq);

	/**
	 *
	 * TODO <br>
	 * 0.1:wanglihua:2019年4月19日 上午11:01:09:TODO <br>
	 * @author wanglihua
	 * @since 2019年4月19日 上午11:01:09
	 * @date 2019年4月19日 上午11:01:09
	 * @version 0.1 初始为0.1,后续变更则修改
	 */
	public LmtPrdContVO queryContractEle(LmtPrdContVO lmtPrdContVO);

	/**
	 *
	 * TODO 个人额度查询，使用授信流水号查询<br>
	 * 0.2:wanglihua:2019年4月24日 上午9:51:39:TODO <br>
	 * @author wanglihua
	 * @since 2019年4月24日 上午9:51:39
	 * @date 2019年4月24日 上午9:51:39
	 * @version 0.1 初始为0.1,后续变更则修改
	 */
	public LmtPrdContVO queryOneQuota(LmtPrdContVO lmtPrdContVO);

	/**
	 *
	 * TODO 个人额度查询<br>
	 * @author wanglihua
	 * @since 2019年4月24日 上午9:51:39
	 * @date 2019年4月24日 上午9:51:39
	 * @version 0.1
	 */
	public List<LmtPrdContVO> queryOneCus(LmtPrdContVO lmtPrdContVO);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年5月22日 上午8:39:09
	 * 功能描述：通过证件类型、证件号码统计信息
	 */
	public List<LmtPrdContVO> qryLmtPrdContByCust(LmtPrdContVO lmtPrdContVO);

	/**
	 * 开发人员：【chenxuan】
	 * 创建/修改日期：【2019/6/4】
	 * 修改描述：批量变更客户经理
	 * @Param [SedSynCusManageVOList]
	 * @return boolean
	 **/
	public boolean batchUpdateCusManage(List<SedSynCusManageVO> sedSynCusManageVOList);

	int countLmtProContByCertTypeAndCertNo(String certType,String certNo);

	/**
	 * 根据证件号码和证件类型查询授信协议表
	 * @author xiezw
	 */
	public List<LmtPrdContVO> queryAllLmtPrdCont(LmtPrdContVO lmtPrdContVO);

	List<LmtPrdContVO> queryByLmtSeqs(@Param("list") List<String> list);

	List<LmtPrdContVO> aplcOCMExstdCrLmt(LmtPrdContVO lmtPrdContVO);

    int updateLmtStatus(String lmtStatus, String lmtContNo);
}
	
